Page({
  data: {
    detail: {}, // 需求单详情
    demandId: null, // 需求单ID
    isLiked: false, // 是否点赞
    isCollected: false, // 是否收藏
    comments: [], // 评论列表
    showCommentPopup: false, // 是否显示评论输入框
    commentText: '', // 评论内容
    imageList: [], // 图片列表
    tagList: [], // 标签列表
    page: 1, // 当前页数
    pageSize: 10, // 每页展示的数据数
    hasMore: true, // 是否还有更多数据
    replyCommentId: null, // 当前回复的评论 ID
		isFollow: 0 // 是否已关注
  },

  onLoad(options) {
		const demandId = options.demandId; // 从路由参数中获取需求单ID
		this.setData({
			demandId
		});
		this.loadDetail(demandId);
		this.loadComments(demandId, this.data.page, this.data.pageSize);
	},	

  // 加载需求单详情
loadDetail(demandId) {
  wx.request({
    url: 'http://localhost:8080/user/demand/getById',
    method: 'GET',
    header: {
      'Content-Type': 'application/json', // 请求头
      token: wx.getStorageSync('userInfo').data.token, // 携带 token
    },
    data: {
      demandId
    },
    success: (res) => {
      if (res.data.code === 1) {
        const detail = res.data.data;
        // 处理图片列表和标签列表
        const imageList = detail.urlList ? detail.urlList.split(',') : [];
        const tagList = detail.tags ? detail.tags.split(',') : [];
        this.setData({
          detail,
          imageList,
          tagList,
          isFollow: detail.isFollow // 同步关注状态
        });
      } else {
        wx.showToast({
          title: '加载失败，请重试',
          icon: 'none'
        });
      }
    },
    fail: () => {
      wx.showToast({
        title: '网络错误，请重试',
        icon: 'none'
      });
    }
  });
},

  // 关注用户
followUser() {
  const followeeId = this.data.detail.userId; // 被关注者 ID
  wx.request({
    url: 'http://localhost:8080/user/user/follow?followeeId=' + followeeId,
    method: 'PUT',
    header: {
      token: wx.getStorageSync('userInfo').data.token, // 携带 token
    },
    success: (res) => {
      if (res.data.code === 1) {
        this.setData({
          'detail.isFollow': 1 // 更新关注状态为已关注
        });
        wx.showToast({
          title: '关注成功',
          icon: 'none'
        });
      } else {
        wx.showToast({
          title: '关注失败，请重试',
          icon: 'none'
        });
      }
    },
    fail: () => {
      wx.showToast({
        title: '网络错误，请重试',
        icon: 'none'
      });
    }
  });
},

// 取消关注
unfollowUser() {
  const followeeId = this.data.detail.userId; // 被关注者 ID
  wx.request({
    url: 'http://localhost:8080/user/user/unfollow?followeeId=' + followeeId,
    method: 'DELETE',
    header: {
      token: wx.getStorageSync('userInfo').data.token, // 携带 token
    },
    success: (res) => {
      if (res.data.code === 1) {
        this.setData({
          'detail.isFollow': 0 // 更新关注状态为未关注
        });
        wx.showToast({
          title: '取消关注成功',
          icon: 'none'
        });
      } else {
        wx.showToast({
          title: '取消关注失败，请重试',
          icon: 'none'
        });
      }
    },
    fail: () => {
      wx.showToast({
        title: '网络错误，请重试',
        icon: 'none'
      });
    }
  });
},

  // 加载评论列表
  loadComments(demandId, page, pageSize) {
    wx.request({
      url: 'http://localhost:8080/user/common/page',
      method: 'GET',
      header: {
        token: wx.getStorageSync("userInfo").data.token, // 携带 token
      },
      data: {
        page,
        pageSize,
        contentType: '0', // 类型，0为需求单
        contentId: demandId // 需求单ID
      },
      success: (res) => {
        console.log(res);
        if (res.data.code === 1) {
          const newComments = res.data.data.records.map(comment => {
            comment.replies = comment.replies || []; // 确保每条评论都有 replies 字段
            comment.replies = comment.replies.map(reply => {
              reply.repliedUsername = reply.repliedUsername || null; // 确保每条回复都有 repliedUsername 字段
              return reply;
            });
            return comment;
          });
          const comments = page === 1 ? newComments : this.data.comments.concat(newComments); // 如果是第一页，直接覆盖；否则合并
          const hasMore = page < res.data.data.pages; // 判断是否还有更多数据
          this.setData({
            comments,
            hasMore
          });
        } else {
          wx.showToast({
            title: '加载评论失败，请重试',
            icon: 'none'
          });
        }
      },
      fail: () => {
        wx.showToast({
          title: '网络错误，请重试',
          icon: 'none'
        });
      }
    });
  },

  // 加载更多评论
  loadMoreComments() {
    if (this.data.hasMore) {
      const page = this.data.page + 1;
      this.setData({
        page
      });
      this.loadComments(this.data.demandId, page, this.data.pageSize);
    }
  },

  // 点赞需求单
  likeDemand() {
    const {
      demandId,
      isLiked,
      detail
    } = this.data;
    const url = isLiked ? 'http://localhost:8080/user/common/unLike' : 'http://localhost:8080/user/common/like';
    const method = isLiked ? 'DELETE' : 'POST';

    wx.request({
      url: url + `?contentId=${demandId}&contentType=0`,
      method: method,
      header: {
        'Content-Type': 'application/json',
        token: wx.getStorageSync('userInfo').data.token,
      },
      success: (res) => {
        if (res.data && res.data.code === 1) {
          // 更新点赞数和点赞状态
          const newLikeCount = isLiked ? detail.likeCount - 1 : detail.likeCount + 1;
          this.setData({
            isLiked: !isLiked, // 切换点赞状态
            detail: {
              ...detail,
              likeCount: newLikeCount // 更新点赞数
            }
          });
          wx.showToast({
            title: isLiked ? '取消点赞成功' : '点赞成功',
            icon: 'none',
          });
        } else {
          wx.showToast({
            title: res.data.message || '操作失败，请重试',
            icon: 'none',
          });
        }
      },
      fail: () => {
        wx.showToast({
          title: '网络错误，请重试',
          icon: 'none',
        });
      },
    });
  },

  // 收藏需求单
  collectDemand() {
    const {
      demandId,
      isCollected,
      detail
    } = this.data;
    const url = isCollected ? 'http://localhost:8080/user/common/uncollect' : 'http://localhost:8080/user/common/collect';
    const method = isCollected ? 'DELETE' : 'POST';

    wx.request({
      url: url + `?contentId=${demandId}&contentType=0`,
      method: method,
      header: {
        'Content-Type': 'application/json',
        token: wx.getStorageSync('userInfo').data.token,
      },
      success: (res) => {
        if (res.data && res.data.code === 1) {
          // 更新收藏数和收藏状态
          const newCollectCount = isCollected ? detail.collectCount - 1 : detail.collectCount + 1;
          this.setData({
            isCollected: !isCollected, // 切换收藏状态
            detail: {
              ...detail,
              collectCount: newCollectCount // 更新收藏数
            }
          });
          wx.showToast({
            title: isCollected ? '取消收藏成功' : '收藏成功',
            icon: 'none',
          });
        } else {
          wx.showToast({
            title: res.data.message || '操作失败，请重试',
            icon: 'none',
          });
        }
      },
      fail: () => {
        wx.showToast({
          title: '网络错误，请重试',
          icon: 'none',
        });
      },
    });
  },

  // 分享需求单
  shareDemand() {
    wx.showToast({
      title: '分享功能开发中',
      icon: 'none'
    });
  },

  // 显示评论输入框
  showCommentInput() {
    this.setData({
      showCommentPopup: true
    });
  },

  // 隐藏评论输入框
  hideCommentInput() {
    this.setData({
      showCommentPopup: false,
      replyCommentId: null
    });
  },

  // 评论内容变化
  onCommentChange(event) {
    this.setData({
      commentText: event.detail
    });
  },

  // 提交评论
  submitComment() {
    const {
      commentText,
      demandId,
      replyCommentId,
      repliedUsername
    } = this.data;
    if (!commentText) {
      wx.showToast({
        title: '评论内容不能为空',
        icon: 'none'
      });
      return;
    }
    wx.request({
      url: 'http://localhost:8080/user/common/addComment',
      method: 'POST',
      header: {
        token: wx.getStorageSync("userInfo").data.token, // 携带 token
      },
      data: {
        contentType: '0', // 类型，0为需求单
        contentId: demandId, // 需求单ID
        content: commentText, // 评论内容
        parentId: replyCommentId, // 父评论 ID（如果是回复）
        repliedUsername: repliedUsername // 被回复的用户名
      },
      success: (res) => {
        if (res.data.code === 1) {
          wx.showToast({
            title: '评论成功',
            icon: 'success'
          });
          this.setData({
            commentText: '',
            showCommentPopup: false,
            replyCommentId: null,
            repliedUsername: null,
            comments: [] // 清空评论列表
          });
          this.loadComments(demandId, 1, this.data.pageSize); // 重新加载第一页评论
        } else {
          wx.showToast({
            title: '评论失败，请重试',
            icon: 'none'
          });
        }
      },
      fail: () => {
        wx.showToast({
          title: '网络错误，请重试',
          icon: 'none'
        });
      }
    });
  },

  // 回复评论
  replyComment(event) {
    const commentId = event.currentTarget.dataset.commentId; // 获取评论 ID
    const username = event.currentTarget.dataset.username; // 获取被回复的用户名
    this.setData({
      showCommentPopup: true,
      replyCommentId: commentId, // 记录当前回复的评论 ID
      repliedUsername: username // 记录被回复的用户名
    });
  },

  // 极速联系
  contactUser() {
    wx.showToast({
      title: '极速联系功能开发中',
      icon: 'none'
    });
  },

  // 约拍TA
  bookDemand() {
    wx.showToast({
      title: '约拍功能开发中',
      icon: 'none'
    });
  }
});
